Snowflakeの接続診断ツール「SnowCD」を使ってみよう
こんにちは!DA(データアナリティクス)事業本部 インテグレーション部の大高です。
SnowflakeのPython Connectorを試していた際に、接続診断ツールとして「SnowCD」というツールがあることを知りました。今回はこの「SnowCD」を早速使ってみたいと思います。
前提
OSはUbuntuの18.04
を利用しています。(WindowsのWSLです)
「SnowCD」とは?
SnowCD(Snowflake Connectivity Diagnostic Tool)は、その名の通りSnowflake用の接続診断ツールで、Snowflakeへの接続診断やトラブルシューティングに利用できるツール、とのことです。
SYSTEM$WHITELIST または SYSTEM$WHITELIST_PRIVATELINK を実行する
ウェブインターフェースからSYSTEM$WHITELIST
を実行してホワイトリストを取得します。なお、「AWS PrivateLink」または「Azure Private Link」を利用している場合にはSYSTEM$WHITELIST_PRIVATELINK
を実行します。
SELECT SYSTEM$WHITELIST();
実行結果をクリックすると詳細ダイアログが表示されるので、「COPY」をクリックしてクリップボードにコピーします。
コピーした結果は、以下のように「whitelist.json」として保存します。なお、文字コードは「UTF-8」で保存しました。
[{"type":"SNOWFLAKE_DEPLOYMENT","host":"xxx.snowflakecomputing.com","port":443},{"type":"OCSP_RESPONDER","host":"ocsp.xxx.amazontrust.com","port":80}]
また、結果を一覧形式で見たい場合には、下記のクエリで確認可能です。
select value:type as type, value:host as host, value:port as port from table(flatten(input => parse_json(system$whitelist())));
「SnowCD」をインストールする
ダウンロードとインストールをドキュメントに沿って行います。
今回はLinuxなので、Linux用のファイルをドキュメント内のリンクからダウンロードします。また、Debian系のUbuntu
を利用しているので、*.deb
ファイルをダウンロードしました。Redhat
系の場合は*.rpm
が良いかと思います。
# ダウンロード $ curl -O https://sfc-repo.snowflakecomputing.com/snowcd/linux/latest/snowflake-snowcd-1.0.2.x86_64.deb # aptでインストール $ sudo apt install ./snowflake-snowcd-1.0.2.x86_64.deb Reading package lists... Done Building dependency tree Reading state information... Done Note, selecting 'snowflake-snowcd' instead of './snowflake-snowcd-1.0.2.x86_64.deb' The following NEW packages will be installed: snowflake-snowcd 0 upgraded, 1 newly installed, 0 to remove and 156 not upgraded. After this operation, 10.0 MB of additional disk space will be used. Get:1 /home/ubuntu/snowcd/snowflake-snowcd-1.0.2.x86_64.deb snowflake-snowcd amd64 1.0.2 [5003 kB] Selecting previously unselected package snowflake-snowcd. (Reading database ... 38364 files and directories currently installed.) Preparing to unpack .../snowflake-snowcd-1.0.2.x86_64.deb ... Unpacking snowflake-snowcd (1.0.2) ... Setting up snowflake-snowcd (1.0.2) ... # バージョン確認 $ snowcd --version snowcd version 1.0.2
簡単ですね。なお、この場合パッケージはsnowflake-snowcd
としてインストールされるので、アンインストール時には以下のようにアンインストールすることになります。
$ sudo apt remove snowflake-snowcd
「SnowCD」を実行する
では、さっそく先程用意したwhitelist.json
を使って試してみましょう。
$ snowcd whitelist.json Performing 33 checks for 13 hosts All checks passed
問題ないようですね。なお、詳細なオプションは以下のようです。
$ snowcd --help The Snowflake Connectivity Diagnostic tool to diagnose network connectivity issue. Usage: snowcd <path to input json file> [flags] Examples: snowcd test.json Flags: -h, --help help for snowcd --logLevel string log level (panic, fatal[default], error, warning, info, debug, trace) (default "fatal") --logPath string Output directory for log. When not specified, no log is generated --printCertificates print certificates for the whitelist, no checks are perform. Remember to specify proxy if you use it during check. (default false) --proxyHost string host for http proxy. (When not specified, does not use proxy at all --proxyIsHTTPS Is connection to proxy secure, i.e. https. (default false) --proxyPassword string password for http proxy.(default empty) --proxyPort int port for http proxy.(default 8080) (default 8080) --proxyUser string user name for http proxy.(default empty) -t, --timeout int timeout for each hostname's checks in seconds (default 5) (default 5) --version version for snowcd
試しに、以下のように詳細ログを出力してみます。ログレベルとログファイルパスを指定して、ファイルにログを出力します。
$ snowcd whitelist.json --logLevel=trace --logPath=./snowcd.log Performing 33 checks for 13 hosts All checks passed
すると、こんな感じでログが出力されました。
time="2020-03-31T09:57:17+09:00" level=trace msg="ip addresses: [{xx.xxx.x.x }]" CheckType="DNS Check" Host=xxx.s3.amazonaws.com Port=443 Type=STAGE (略) time="2020-03-31T09:57:20+09:00" level=info msg="Check clear. No error presented." CheckType="HTTP checker" Host=xxx.s3.us-west-2.amazonaws.com Port=443 Type=SNOWSQL_REPO
なにか問題があった場合には、このようなログから原因解析が進められそうですね。
まとめ
以上、Snowflakeの接続診断ツール「SnowCD」の紹介でした。 Snowflakeへの接続に問題があった場合には、こちらのツールなどを活用して原因分析に役立てればと思います。
どなたかのお役に立てば幸いです。それでは!